home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / LIBRARY / PAS_0693 / SCROLLNG.PAS < prev    next >
Pascal/Delphi Source File  |  1993-06-30  |  1KB  |  48 lines

  1. {─ Fido Pascal Conference ────────────────────────────────────────────── PASCAL ─
  2. Msg  : 508 of 587
  3. From : Sean Palmer                         1:104/123.0          06 Jun 93  14:52
  4. To   : Ryan Brown
  5. Subj : Scrolling
  6. ────────────────────────────────────────────────────────────────────────────────
  7. RB>How would i scroll something across the screen? Just normal ASCII chars. not
  8. RB>graphics. I thought about moving one char at a time butthat'd take..
  9. RB>forvere!
  10.  
  11. actually one character at a time is always how non-hardware scrolling is
  12. done...
  13.  
  14. try this little code:}
  15.  
  16. const videoSeg:word=$B800;
  17.  
  18. procedure moveToScreen(var str;len:byte;x,y:word);assembler;asm
  19.  mov ax,80
  20.  mul y
  21.  add ax,x
  22.  shl ax,1
  23.  mov di,ax
  24.  mov es,videoSeg
  25.  mov cl,len
  26.  xor ch,ch
  27.  cld
  28.  push ds
  29.  lds si,str
  30. @L:
  31.  movsb
  32.  inc di
  33.  loop @L
  34.  pop ds;
  35.  end;
  36.  
  37. const msg:string=
  38.  'This is the message that will scroll across the bottom of '+
  39.  'the screen if you run the procedure scrollMsg '+
  40.  '                                   ';
  41.  
  42. procedure scrollMsg;var i:integer; begin   {scroll msg across bottom}
  43.  for I:=1 to (length(msg)-79) do
  44.   moveToScreen(msg[i],80,0,24);
  45.  end;
  46.  
  47. This all is very very untested...
  48.